<?php
/**
 * 工具类
 * 包含一些通用的工具方法
 */
class Utils {
    /**
     * 数据安全过滤
     * @param mixed $string 需要过滤的字符串或数组
     * @return mixed 过滤后的数据
     */
    public static function safeFilter($string) {
        if (is_array($string)) {
            return array_map([self::class, 'safeFilter'], $string);
        } else {
            if (strlen($string) < 20) return trim($string);
            $match = [
                "/&#([a-z0-9]+)([;]*)/i", 
                "/(j[\s\r\n\t]*a[\s\r\n\t]*v[\s\r\n\t]*a[\s\r\n\t]*s[\s\r\n\t]*c[\s\r\n\t]*r[\s\r\n\t]*i[\s\r\n\t]*p[\s\r\n\t]*t|jscript|vbscript|vbs|about|expression|script|frame|link|import|meta)/i", 
                "/on(mouse|exit|error|click|dblclick|key|load|unload|change|move|submit|reset|cut|copy|select|start|stop)/i"
            ];
            $replace = ["", "<d>\\1</d>", "on\n\\1"];
            return preg_replace($match, $replace, trim($string));
        }
    }

    /**
     * 返回JSON格式的响应
     * @param array $data 要返回的数据
     * @return void
     */
    public static function jsonResponse($data) {
        $content = json_encode($data, JSON_UNESCAPED_UNICODE);
        if (empty($_GET['callback'])) {
            echo $content;
            exit;
        } else {
            echo $_GET['callback'] . "(" . $content . ")";
            exit;
        }
    }
}